package com.fl.nj.mapper;

import com.fl.nj.entity.ServiceType;
import org.apache.ibatis.annotations.*;
import java.util.List;
import java.util.Map;

/**
 * 服务类型Mapper接口
 * 提供服务类型的数据库操作方法
 */
@Mapper
public interface ServiceTypeMapper {
    /**
     * 保存服务类型
     * @param serviceType 服务类型实体
     * @return 影响的行数
     */
    @Insert("INSERT INTO service_type (type_name, description, create_time, update_time) VALUES (#{typeName}, #{description}, NOW(), NOW())")
    @Options(useGeneratedKeys = true, keyProperty = "id")
    int save(ServiceType serviceType);
    
    /**
     * 更新服务类型
     * @param serviceType 服务类型实体
     * @return 影响的行数
     */
    @Update("UPDATE service_type SET type_name = #{typeName}, description = #{description}, update_time = NOW() WHERE id = #{id}")
    int update(ServiceType serviceType);
    
    /**
     * 根据ID删除服务类型
     * @param id 服务类型ID
     * @return 影响的行数
     */
    @Delete("DELETE FROM service_type WHERE id = #{id}")
    int delete(Long id);
    
    /**
     * 根据ID获取服务类型
     * @param id 服务类型ID
     * @return 服务类型实体
     */
    @Select("SELECT * FROM service_type WHERE id = #{id}")
    ServiceType getById(Long id);
    
    /**
     * 根据类型名称获取服务类型
     * @param typeName 服务类型名称
     * @return 服务类型实体
     */
    @Select("SELECT * FROM service_type WHERE type_name = #{typeName}")
    ServiceType getByTypeName(String typeName);
    
    /**
     * 获取所有服务类型
     * @return 服务类型列表
     */
    @Select("SELECT * FROM service_type ORDER BY create_time DESC")
    List<ServiceType> getAll();
    
    /**
     * 分页查询服务类型
     * @param params 包含分页参数的Map
     * @return 服务类型列表
     */
    List<ServiceType> getPageList(Map<String, Object> params);
    
    /**
     * 获取服务类型总数
     * @param params 包含查询条件的Map
     * @return 服务类型总数
     */
    int getTotal(Map<String, Object> params);
}